package com.hnust.config;

import com.cleveroom.command.Instruction;
import com.cleveroom.core.KLWCommunicater;
import com.hnust.entity.Device;
import com.hnust.service.DeviceService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;

import java.util.List;

/**
 * 创建人：zhangRuWang
 * 创建时间：2022/5/20
 * 描述：
 */
@Component
@Slf4j
public class ScheduleTask {
    @Autowired
    private DeviceService deviceService;
    @Autowired
    private KLWCommunicater klwCommunicater;

    @Scheduled(cron="0 0/5 * * * ? ")   //每5分钟执行一次
    public void queryDeviceState(){
        log.info("定时任务启动。。。。。");
        //先将设备状态全部置为离线
        List<Device> devices=deviceService.list();
        for(Device d:devices){
            d.setState(0);
        }
        deviceService.updateBatchById(devices);
        //发送查询所有传感器指令
        klwCommunicater.asynSend(new Instruction(243,168,0,0,0,0,0));
        //查询系统所有设备状态、安防信息、全局情景指令，
        // 发送如下指令可以查询系统中设备状态、安防信息、全局情景设置情况，
        // 本指令建议作为系统刷新使用，网关将保留系统最新设备数据，终端可可将后台运行设备列表更新
        klwCommunicater.asynSend(new Instruction(243,216,0,0,0,0,0));
    }
}
